home *** CD-ROM | disk | FTP | other *** search
- property pSprite, spriteNum, pNormal, pRollover, pPressed, pDisabled, pActive
- global gBet, gHand, gCardSprites, gMessageBox, gPokerHands, gBetUI, gPlayerUI
-
- on beginSprite me
- pSprite = sprite(spriteNum)
- pNormal = pSprite.member
- gPlayerUI.addProp(pNormal.name.symbol, pSprite)
- pRollover = member(pSprite.member.name && "over")
- pPressed = member(pSprite.member.name && "down")
- pDisabled = member(pSprite.member.name && "dis")
- pActive = 1
- me.toggleActive(#off)
- end
-
- on mouseEnter me
- if pActive then
- pSprite.member = pRollover
- end if
- end
-
- on toggleActive me, onOff
- case onOff of
- #on:
- pSprite.member = pNormal
- pActive = 1
- #off:
- pSprite.member = pDisabled
- pActive = 0
- end case
- end
-
- on mouseLeave me
- if pActive then
- pSprite.member = pNormal
- end if
- end
-
- on mouseDown me
- if pActive then
- pSprite.member = pPressed
- end if
- end
-
- on mouseUp me
- if pActive then
- gBet.mAddBet()
- me.toggleActive(#off)
- gPlayerUI[#fold].toggleActive(#off)
- gPlayerUI[#cashout].toggleActive(#off)
- gMessageBox.text = EMPTY
- repeat with i = 1 to gCardSprites[#dealer].count
- if gCardSprites[#dealer][i].member = member("backofcard") then
- puppetSound(7, "flip card")
- gCardSprites[#dealer][i].member = member(gHand[#dealer]._cards[i].mGetImage())
- end if
- s = the ticks + 10
- repeat while the ticks < s
- updateStage()
- end repeat
- updateStage()
- end repeat
- gMessageBox.text = "Sorting cards"
- puppetSound(4, "sort cards")
- gHand[#dealer].sortCards(gCardSprites[#dealer])
- puppetSound(5, "sort cards")
- gHand[#player].sortCards(gCardSprites[#player])
- dealerResult = gHand[#dealer].checkHand(#dealer)
- playerResult = gHand[#player].checkHand()
- if voidp(dealerResult) then
- gMessageBox.text = "Dealer does not qualify"
- gBet.mReturnBet(gBet._betAmount + gBet._ante)
- else
- if gPokerHands.findPos(playerResult) > gPokerHands.findPos(dealerResult) then
- gMessageBox.text = "You win"
- gBet.mReturnBet(gBet._betAmount + (gBet._betAmount * getOdds(playerResult)) + gBet._ante)
- else
- if gPokerHands.findPos(playerResult) < gPokerHands.findPos(dealerResult) then
- gMessageBox.text = "Dealer wins"
- gBet.mResetBet()
- else
- if gPokerHands.findPos(playerResult) = gPokerHands.findPos(dealerResult) then
- dealerResult2 = gHand[#dealer].checkHandValue()
- playerResult2 = gHand[#player].checkHandValue()
- if playerResult2 > dealerResult2 then
- gMessageBox.text = "You win"
- gBet.mReturnBet(gBet._betAmount + (gBet._betAmount * getOdds(playerResult)) + gBet._ante)
- else
- if playerResult2 < dealerResult2 then
- gMessageBox.text = "Dealer wins"
- gBet.mResetBet()
- else
- whoHasHigh = compareShit()
- if whoHasHigh = #player then
- gMessageBox.text = "You win"
- gBet.mReturnBet((gBet._betAmount * 2) + gBet._ante)
- else
- gMessageBox.text = "Dealer wins"
- gBet.mResetBet()
- end if
- end if
- end if
- else
- whoHasHigh = compareShit()
- if whoHasHigh = #player then
- gMessageBox.text = "You win"
- gBet.mReturnBet((gBet._betAmount * 2) + gBet._ante)
- else
- gMessageBox.text = "Dealer wins"
- gBet.mResetBet()
- end if
- end if
- end if
- end if
- end if
- s = the ticks + 150
- repeat while the ticks < s
- updateStage()
- end repeat
- repeat with who in [#dealer, #player]
- repeat with i = 1 to gCardSprites[who].count
- puppetSound(5, "flip card")
- gCardSprites[who][i].member = member("invisible_card")
- s = the ticks + 5
- repeat while the ticks < s
- updateStage()
- end repeat
- end repeat
- end repeat
- if gBet.pCreditBalance < 3 then
- s = the ticks + 200
- repeat while the ticks < s
- updateStage()
- end repeat
- go("Game over")
- else
- gMessageBox.text = EMPTY
- if (gBet._ante * 3) <= gBet.pCreditBalance then
- gPlayerUI[#lastBet].toggleActive(#on)
- else
- gBet.mClearAnte()
- end if
- gPlayerUI[#cashout].toggleActive(#on)
- gHand[#player]._cards.deleteAll()
- gHand[#dealer]._cards.deleteAll()
- repeat with i in gBetUI
- if (i.pAmount * 3) > gBet.pCreditBalance then
- next repeat
- end if
- i.toggleActive(#on)
- end repeat
- end if
- end if
- end
-
- on getOdds hand
- if hand = #royalflush then
- return 100
- else
- if hand = #straightflush then
- return 50
- else
- if hand = #fourofakind then
- return 20
- else
- if hand = #fullhouse then
- return 7
- else
- if hand = #flush then
- return 5
- else
- if hand = #straight then
- return 4
- else
- if hand = #threeofakind then
- return 3
- else
- if hand = #twopairs then
- return 2
- else
- if hand = #pair then
- return 1
- end if
- end if
- end if
- end if
- end if
- end if
- end if
- end if
- end if
- end
-
- on compareShit
- if (gHand[#player]._cards[1].pValue = 1) and (gHand[#dealer]._cards[1].pValue <> 1) then
- return #player
- else
- if (gHand[#player]._cards[1].pValue <> 1) and (gHand[#dealer]._cards[1].pValue = 1) then
- return #dealer
- else
- repeat with i = gHand[#player]._cards[1].count down to 2
- if gHand[#player]._cards[i].pValue = gHand[#dealer]._cards[i].pValue then
- next repeat
- end if
- if gHand[#player]._cards[i].pValue > gHand[#dealer]._cards[i].pValue then
- return #player
- next repeat
- end if
- return #dealer
- end repeat
- end if
- end if
- end
-